iT邦幫忙

2021 iThome 鐵人賽

DAY 24
0
自我挑戰組

腦力激盪C++系列 第 24

[Day-24] 小練習十進制轉二進制

  • 分享至 

  • xImage
  •  

今天要來練習的是
二進制轉十進制的練習
/images/emoticon/emoticon12.gif

程式碼:

#include<iostream>
using namespace std;

int main()
{
    char s[8], dec[8];
    while( cout <<"Input four digit binary: ",cin >> s )
    {
		if(s[0] == 49){
			dec[0] = 8;
		}else{
			dec[0] = 0;
		}
			
		if(s[1] == 49){
			dec[1] = 4;
		}else{
			dec[1] = 0;
		}
				
		if(s[2] == 49){
			dec[2] = 2;
		}else{
			dec[2] = 0;
		}
					
		if(s[3] == 49){
			dec[3] = 1;
		}else{
			dec[3] = 0;
		}
		cout << "Decimal is " << dec[0]+dec[1]+dec[2]+dec[3];
		endl(cout);
        endl(cout);  
    }
    	
    return 0;
}

執行結果:

Input four digit binary: 0000
Decimal is 0

Input four digit binary: 0001
Decimal is 1

Input four digit binary: 0010
Decimal is 2

Input four digit binary: 0011
Decimal is 3

Input four digit binary: 0100
Decimal is 4

Input four digit binary: 0101
Decimal is 5
--------------------------------
Process exited after 0.08787 seconds with return value 0
請按任意鍵繼續...

程式碼解釋:
◆宣告陣列變數
char s[8] :用來儲存cin讀取鍵盤的值
char dec[8]:用來暫存二進制換算十進制的值

◆使用while迴圈
使用while迴圈讓程式重複執行
判斷值是一直重複讀取鍵盤輸入的值

◆使用if-else判斷式
這邊要由二進制換算成十進制
就要利用指數加權法
拿1101舉例
https://ithelp.ithome.com.tw/upload/images/20210928/20141707dorSkZd20m.png
1101= https://ithelp.ithome.com.tw/upload/images/20210928/20141707mqgK52ZnJ3.png
  =8+0+2+1
  =11
了解以上原理
就利用if-else判斷式來判斷
舉1011的例子來說
先判斷輸入的s[0]是否為1
這邊是用char字元型態的陣列
1的ASCII為49
因此判斷式為s[0] == 49
則進入if
將值為8=2的3次方存入陣列dec[]裡面
其它三個以此類推

  • 判斷式為s[1] == 49
    將值為4=2的2次方存入陣列dec[]裡面

  • 判斷式為s[2] == 49
    將值為2=2的1次方存入陣列dec[]裡面

  • 判斷式為s[3] == 49
    將值為1=2的0次方存入陣列dec[]裡面

最後再將陣列dec[]所有的值加起來
就是十進制了

以上就練習到這邊啦~
/images/emoticon/emoticon08.gif

-End-


上一篇
[Day-23] 小練習二進制轉十進制
下一篇
[Day-25] math函式庫(一)
系列文
腦力激盪C++30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言